/********************************************************/
/*                                                      */
/*       Variables globales du pluggin websafe          */
/*------------------------------------------------------*/
/*                                                      */
/*------------------------------------------------------*/
/*       Par MaX3315                                    */
/*       http://codessources.votre-web.com              */
/********************************************************/
var CP_PLUGGIN_WEBSAFE_REFRESH_THREAD_DECAY=5;	//temps de pause nécessaire avant lancement du test isWebSafe.  (ms)
												//mettre 0 pour une recherche en temps réelle
												//mais cela ralentira le script dans son intégralité!
												//une pause = arret de la sourie
var CP_PLUGGIN_WEBSAFE_BG_SELECTOR_PALETTE='#D4D0C8';

/********************************************************/
/*                                                      */
/*        Méthodes globales du pluggin websafe          */
/*------------------------------------------------------*/
/*                                                      */
/********************************************************/

//gestionnaire du click pour charger la couleur web protégée
function CP_PLUGGIN_WEBSAFE_CLICK(aEvent)
{
	var myEvent = aEvent ? aEvent : window.event; //recuperation de l'evenement
	//on recupere objet cible declencheur de l'evenement
	var target= myEvent.target ? myEvent.target : myEvent.srcElement;
	
	//recuperation de l'id du color picker
	var tmp=target.id.split('_');
	var cpid='';
	for(var i=0 ; i<tmp.length-3 ; i++) { if(i>0) {cpid+='_'; } cpid+=tmp[i]; }
	
	var colorPicker=CP_findColorPickerById(cpid);
	if(colorPicker)
	{
		//recuperation de la couleur
		var hexToReload=tmp[tmp.length-1];
		colorPicker.set('hex',hexToReload);
		colorPicker.change(document.getElementById(colorPicker.id+'_hex'));
	}
}

//indique si une couleur Hex passé en paramètre et une couleur web protégée
//retourne array(true|false , couleurProtégé la plus proche en Hex)
function CP_PLUGGIN_WEBSAFE_isWebSafeColor(hexCode)
{
	var i,j,k;
	var isOk=false;
	var p1=RGB2Array(HEX2RGB(hexCode));
	var dMin=null;
	var plusProche=null;
	var valid=Array('00','33','66','99','CC','FF');
	for(i=0 ; i<6 && !isOk ; i++)
	{
	  for(j=0 ; j<6 && !isOk ; j++)
	  {
			for(k=0 ; k<6 && !isOk ; k++)
			{
				  var tmp='#'+valid[i]+valid[j]+valid[k];
				  if(hexCode==tmp) { isOk=true; plusProche=tmp; }
				  else
				  {
					var p2=RGB2Array(HEX2RGB(tmp));
					var dTmp=(p1[0]-p2[0])*(p1[0]-p2[0])+(p1[1]-p2[1])*(p1[1]-p2[1])+(p1[2]-p2[2])*(p1[2]-p2[2]);
					     // nb je n'aplqiue pas la racine carre afin d'eviter ce calcul couteux et qui n'apporte rien de plus.
					if(dMin==null || dMin>dTmp)
					{
					  dMin=dTmp;
					  plusProche=tmp;
					}
				  }
			}
	  }
	}
	if(isOk) { return Array(true,hexCode); }
	else { return Array(false,plusProche); }
}

//méthode écrite à partir de http://www.javascriptfr.com/code.aspx?ID=34359 , Merci Bassman
// permettant la création d'une palette websafe
function CP_PLUGGIN_WEBSAFE_generateWebSafePalette(colorPickerId) 
{
	// Ouverture du tableau
	var resu='<TABLE border="0" cellpadding="0" cellspacing="0" style="cursor:crosshair;"><TR>';
	
	// Déclaration des variables
	var tabk = new Array('FF','CC','99','66','33','00'); // Tableau principal de couleur
	var tabj = tabk;
	var tabi = new Array('CC', '66', '00'); // Petit tableau principal (colonne de 6 couleurs)
	var tabi2 = new Array('00','33','66','99','CC','FF'); // Tableau principal inversé pour la colone du milieu (colonne de 6 couleurs)
	var color=""; // initialisation de color a vide
	var cmp = 0; // initialisation du compteur a 0
	
	// Début prog
	for(var k=0;k<6;k++) // Boucle pour les lignes de couleurs
	{
		for(var i=0;i<3;i++) // Boucle pour les colonnes (colonnes de 6 couleurs)
		{
			if (i == 1) // Si on attaque la 2 eme colonne de 6 couleurs
			{ tabj = tabi2;  }// on inverse le tableau principale de couleurs
			else // sinon
			{ tabj = Array('FF','CC','99','66','33','00'); }// On remet le tableau par default
			
			for(var j=0;j<6;j++) // Boucle pour l'affichage couleur par couleur
			{
				var color="#"+tabi[i]+tabk[k]+tabj[j]; // concaténation des chaines pour la valeur de la couleur
				// et on affiche la couleur
				resu+='<td id="'+colorPickerId+'_webSafeReload_selector_'+color+'" style="height:14px; width:14px; border: 1px solid #000000; background-color:'+color+';" onClick="CP_PLUGGIN_WEBSAFE_CLICK(event);"></td>'; 
			} 
		} 
		resu+='</tr>';
		
		cmp = cmp + 1; // On compte le nombre de ligne faite
		if (cmp == 6) // si on a fait les 6 lignes
		{
			var tabi = new Array('FF', '99', '33'); // on redéfini le nouveau tableau principal (colonne de 6 couleurs)
			var tabk = tabi2; // on re initialise le tableau des lignes
			k = -1; // on défini k à -1 car on a déja fait un passage
		}
	}
	// Fin prog
	resu+='</TABLE>'; // On ferme le tableau + saut de ligne
	return resu;
} 
